package com.hw01.service;

import com.hw01.common.Result;
import com.hw01.common.ResultPage;
import com.hw01.dto.OrganizationAddDto;
import com.hw01.dto.OrganizationUpdateDto;
import com.hw01.dto.OrganizationQueryDto;
import com.hw01.entity.Organization;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hw01.vo.OrganizationVo;

/**
 * <p>
 * 部门 服务类
 * </p>
 *
 * @author zhong
 * @since 2024-03-18
 */
public interface OrganizationService extends IService<Organization> {

    /**
     * 按条件查询部门(分页)
     * 
     * @param dto 查询条件类
     * @return 结果
     */
    ResultPage<OrganizationVo> getOrganizationPage(OrganizationQueryDto dto);

    /**
     * 新增部门
     * 
     * @param dto 部门信息
     * @return 结果
     */
    Result<Boolean> add(OrganizationAddDto dto);

    /**
     * 修改部门信息
     * 
     * @param dto 部门信息
     * @return 结果
     */
    Result<Boolean> update(OrganizationUpdateDto dto);

    /**
     * 删除部门
     * 
     * @param id 部门id(主键)
     * @return 结果
     */
    Result<Boolean> delete(Long id);

    /**
     * 校验部门名称是否重复
     * 
     * @param orgName 部门名称
     * @param id 部门id, 不为空排除
     * @return 结果
     */
    Result<Boolean> verifyOrgName(String orgName, Long id);

    /**
     * 设置部门领导
     * 
     * @param orgId 部门id
     * @param userId 员工用户id
     * @return 结果
     */
    Result<Boolean> setOrgLeader(Long orgId, Long userId);
}
